home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / I-Info Magazine / (c)i19.d64 / form maker2 (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  8KB  |  254 lines

  1. 10 REM *** LFS FORM MAKER2 ***
  2. 20 REM
  3. 30 REM     5/31/87 VERSION
  4. 40 REM
  5. 50 REM     COPYRIGHT, 1987
  6. 60 REM     LOUIS F. SANDER
  7. 70 REM     153 MAYER DRIVE
  8. 80 REM  PITTSBURGH, PA  15237
  9. 90 REM
  10. 120 REM *** MAIN LOOP
  11. 130 GOSUB190:REM INITIALIZE
  12. 140 GOSUB270:REM MAIN MENU
  13. 150 ON A GOSUB390,640,930,1250,1470:REM MENU SELECTIONS
  14. 160 RUN
  15. 170 :
  16. 180 REM *** INITIALIZE
  17. 190 DIM CW%(255),LL$(255),RL$(255)
  18. 200 PW=80:PI=11:K1=631:K2=198:IFPEEK(65534)<>72THENK1=842:K2=208:REM 64OR128?
  19. 210 EM$="       [158] ERROR! MUST BE AT LEAST 1 ":Q$=CHR$(34)
  20. 220 R$=CHR$(13):TL$="[147][158][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]"
  21. 230 POKE53280,6:POKE53281,6
  22. 240 RETURN
  23. 250 :
  24. 260 REM *** MAIN MENU
  25. 270 PRINTTL$;" LFS FORM MAKER - LOUIS F. SANDER - 5/87[146][160]"
  26. 280 PRINT"[153]THIS LETS YOU DESIGN FORMS. SELECT:"
  27. 290 PRINT"    1 - CREATE A NEW FORM
  28. 300 [153]"    2 - EDIT AN EXISTING FORM
  29. 310 PRINT"    3 - PRINT AN EXISTING FORM
  30. 320 [153]"    4 - INSTRUCTIONS
  31. 330 PRINT"    5 - QUIT
  32. 340 [161]A$:[139]A$[178]""[167]340
  33. 350 A[178][197](A$):[139]A[179]1[176]A[177]5[167]340
  34. 360 [142]
  35. 370 :
  36. 380 [143] *** CREATE
  37. 390 [153]TL$;"           CREATE A NEW FORM            WAITCLOSE"
  38. 400 [153]"PRINTTHIS LETS YOU CREATE A NEW FORM AND
  39. 410 PRINT"SAVE IT ONTO YOUR DISK.
  40. 420 [153]"PRESS <RETURN> TO RETURN TO THE MENU,
  41. 430 PRINT"OR PRESS ANY OTHER KEY TO CONTINUE...
  42. 440 [161]A$:[139]A$[178]""[167]440
  43. 450 [139]A$[178]R$[167]610
  44. 460 [141]1660
  45. 470 [133]"     PRINT A COPY NOW (Y OR N)  YCMDCMDCMD";A$
  46. 480 [139][200](A$,1)[178]"Y"[167][141]960
  47. 490 [153]"PRINTTO SAVE THE FORM AS A FILE ON THE DISK,
  48. 500 PRINT"YOU MUST GIVE IT A UNIQUE FILE NAME OF"
  49. 510 PRINT"14 CHARACTERS OR FEWER.
  50. 520 [153]"SAVED FORMS CAN EASILY BE PRINTED OR
  51. 530 PRINT"EDITED USING OPTIONS FROM THE MAIN MENU.
  52. 540 [153]"ENTER THE FORM NAME NOW, OR PRESS
  53. 550 PRINT"<RETURN> TO RETURN TO THE MENU.
  54. 560 [153][163]15);"LISTTAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(ONON"
  55. 570 F$[178]"":[133]"    FORM NAME";F$:F$[178]"F/"[170]F$:[139]F$[178]"F/"[167][138]
  56. 580 [159]15,8,15:[159]2,8,2,F$[170]",S,W"
  57. 590 [132]15,A,A$:[139]A[177]19[167][160]2:[160]15:[153]"SYS ";A$;" ":[137]560
  58. 600 [141]2500
  59. 610 [142]
  60. 620 :
  61. 630 [143] *** EDIT
  62. 640 [153]TL$;"         EDIT AN EXISTING FORM          WAITCLOSE"
  63. 650 [153]"PRINTTHIS LETS YOU LOAD AND MODIFY AN
  64. 660 PRINT"EXISTING FORM. YOU CAN THEN SAVE IT
  65. 670 [153]"UNDER THE SAME NAME OR A NEW ONE.
  66. 680 GOSUB1510
  67. 690 OF$=F$
  68. 700 GOSUB1660
  69. 710 INPUT"     PRINT A COPY NOW (Y OR N)  Y[157][157][157]";A$
  70. 720 IFLEFT$(A$,1)="Y"THENGOSUB960
  71. 730 PRINT"[153]TO SAVE THE FORM AS A FILE ON THE DISK,
  72. 740 [153]"YOU MUST GIVE IT A UNIQUE FILE NAME OF"
  73. 750 [153]"14 CHARACTERS OR FEWER.
  74. 760 PRINT"SAVED FORMS CAN EASILY BE PRINTED OR
  75. 770 [153]"EDITED USING OPTIONS FROM THE MAIN MENU.
  76. 780 PRINT"[153]ENTER THE NEW NAME UNDER WHICH YOU WANT
  77. 790 [153]"TO SAVE THE EDITED FORM, OR PRESS
  78. 800 PRINT"<RETURN> TO RETURN TO THE MAIN MENU."
  79. 810 PRINT"'@[153]' WILL SAVE IT UNDER ITS ORIGINAL
  80. 820 [153]"NAME, WHICH IS ";[202](OF$,3);"PRINT"
  81. 830 [153][163]15);"LISTTAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(ONON"
  82. 840 F$[178]"":[133]"    FORM NAME";F$:F$[178]"F/"[170]F$
  83. 850 [139]F$[178]"F/"[167]900
  84. 860 [159]15,8,15:[139]F$[178]"F/@"[167]F$[178]OF$:[152]15,"S0:"[170]F$
  85. 870 [159]2,8,2,F$[170]",S,W"
  86. 880 [132]15,A,A$:[139]A[177]19[167][160]2:[160]15:[153]"SYS ";A$;" ":[137]830
  87. 890 [141]2500
  88. 900 [142]
  89. 910 :
  90. 920 [143] *** PRINT
  91. 930 [153]TL$;"         PRINT AN EXISTING FORM         WAITCLOSE"
  92. 940 [153]"PRINTTHIS LETS YOU LOAD AND PRINT A FORM THATHAS BEEN SAVED ON THE DISK.
  93. 950 GOSUB1510
  94. 960 PRINT"[153]THE FORM IS" LEFT$(STR$((LW+W)/10),5);Q$;" WIDE BY";
  95. 970 PRINTLEFT$(STR$(TL%/9),5);Q$;" LONG,"
  96. 980 PRINT"OR";LW+W;"SPACES WIDE BY";TL%;"LINES LONG."
  97. 990 PRINT"[153]";:OPEN15,4,15:CLOSE15:IFSTTHENPRINT"PUT THE PRINTER ONLINE,
  98. 1000 [153]"ALIGN THE PAPER IN THE PRINTER,
  99. 1010 PRINT"THEN PRESS THE 'P[153]' KEY...          "
  100. 1020 GETA$:IFA$<>"P"THEN1020
  101. 1030 OPEN15,4,15:CLOSE15:IFSTTHENPRINT"[158] PRINTER IS OFFLINE! ":GOTO990
  102. 1040 TX$=CHR$(15) :REM TEXT MODE
  103. 1050 GR$=CHR$(8)  :REM GRAPHICS MODE (FOR LINE SPACING)
  104. 1060 OPEN4,4:GOSUB1200:PRINT#4,LW$;CL$
  105. 1070 FORH=1TONR%:GOSUB1220;:FORJ=1TONC%:PRINT#4,CHR$(207);:FORK=1TOCW%(J)-1
  106. 1080 IFCW%(J)>1THENPRINT#4,CHR$(163);
  107. 1090 NEXT:NEXT:PRINT#4,CHR$(165);GR$:IFLR%<2THEN1130
  108. 1100 FORI=1TOLR%-1:GOSUB1220;:FORJ=1TONC%:PRINT#4,CHR$(165);:FORK=1TOCW%(J)-1
  109. 1110 IFCW%(J)>1THENPRINT#4," ";
  110. 1120 NEXT:NEXT:PRINT#4,CHR$(165);GR$:NEXT
  111. 1130 NEXT:GOSUB1220;:FORJ=1TONC%:FORK=1TOCW%(J):PRINT#4,CHR$(163);:NEXT:NEXT
  112. 1140 PRINT#4:CLOSE4
  113. 1150 INPUT"PRINT ANOTHER COPY (Y OR N)  N[157][157][157]";A$
  114. 1160 IFLEFT$(A$,1)="Y"THENLC=0:PRINT:GOTO990
  115. 1170 RETURN
  116. 1180 :
  117. 1190 REM PUTS ROW LABELS IN PLACE
  118. 1200 FORJ=1TOTL%:LL$(J)=LW$:NEXT
  119. 1210 LN=1:FORK=1+INT((LR%-1)/2)TOTL%-1STEPLR%:LL$(K)=RL$(LN):LN=LN+1:NEXT
  120. 1220 PRINT#4,TX$;LL$(LC);:LC=LC+1:RETURN:REM ROW LABELS
  121. 1230 :
  122. 1240 REM *** INSTRUCTIONS
  123. 1250 PRINT"[147]THIS LETS YOU MAKE FORMS ON THE PRINTER:[160][160]"
  124. 1260 PRINT"            COLUMN 1    COLUMN 2"
  125. 1270 PRINT"          [207][183][183][183][183][183][183][183][183][183][183][207][183][183][183][183][183][183][183][183][183][183][183][183][183][165]"
  126. 1280 PRINT"    ROW 1 [165]          [165]             [165]"
  127. 1290 PRINT"          [207][183][183][183][183][183][183][183][183][183][183][207][183][183][183][183][183][183][183][183][183][183][183][183][183][165]"
  128. 1300 PRINT"    ROW 2 [204][175][175][175][175][175][175][175][175][175][175][204][175][175][175][175][175][175][175][175][175][175][175][175][175][165]"
  129. 1310 PRINT"          [165]          [165]             [165]"
  130. 1320 PRINT"    ROW 3 [204][175][175][175][175][175][175][175][175][175][175][204][175][175][175][175][175][175][175][175][175][175][175][175][175][165]"
  131. 1330 PRINT:PRINT"THE FORM CAN BE AS WIDE AS YOUR PRINTER,"
  132. 1340 PRINT"[145]LESS ONE SPACE. THERE ARE 10 PRINTED"
  133. 1350 PRINT"SPACES PER INCH OF FORM WIDTH, AND NINE"
  134. 1360 PRINT"PRINTER LINES PER INCH OF FORM HEIGHT.
  135. 1370 [153]:[153]"YOU CHOOSE AN INDIVIDUAL WIDTH FOR EACH"
  136. 1380 [153]"COLUMN, AND ONE HEIGHT FOR ALL THE ROWS."
  137. 1390 [153]"YOU CAN LABEL THE COLUMNS AND ROWS.
  138. 1400 PRINT:PRINT"FORMS MAY BE SAVED TO DISK. SAVED FORMS
  139. 1410 [153]"CAN BE REPRINTED AND/OR EDITED.
  140. 1420 PRINT"[153]     PRESS ANY KEY TO CONTINUE..."
  141. 1430 GETA$:IFA$=""THEN1430
  142. 1440 RETURN
  143. 1450 :
  144. 1460 REM *** QUIT
  145. 1470 POKE53280,14:PRINT"[154]"
  146. 1480 END
  147. 1490 :
  148. 1500 REM ** FORM LOADER
  149. 1510 PRINT"[153]ENTER THE NAME OF AN EXISTING FORM, OR
  150. 1520 [153]"PRESS <RETURN> TO RETURN TO THE MENU.
  151. 1530 PRINTTAB(23);"[155][163][163][163][163][163][163][163][163][163][163][163][163][163][163][145][145]"
  152. 1540 F$="":INPUT"   EXISTING FORM NAME";F$:F$="F/"+F$:IFF$="F/"THENRUN
  153. 1550 OPEN15,8,15:OPEN2,8,2,F$+",S,R"
  154. 1560 INPUT#15,A,A$:IFA<20THEN1580
  155. 1570 PRINT"[158] ";A$;" ":CLOSE2:CLOSE15:PRINT"[145][145]":GOTO1530
  156. 1580 INPUT#2,LR%,LW,NC%,NR%,PI,PW,TL%:INPUT#2,CL$
  157. 1590 FORJ=1TONC%:INPUT#2,CW%(J):NEXT
  158. 1600 FORJ=1TONR%:INPUT#2,RL$(J):NEXT
  159. 1610 CLOSE2:CLOSE15
  160. 1620 LW$="":FORJ=1TOLW:LW$=LW$+" ":NEXT
  161. 1630 RETURN
  162. 1640 :
  163. 1650 REM ** FORM EDITOR
  164. 1660 PRINT"  YOUR PRINTER WIDTH IN SPACES ";PW;:A=PW:GOSUB2410
  165. 1670 INPUTPW:PW=PW-1:IFPW<1THENPW=80:GOTO1660
  166. 1680 PRINT"   YOUR PAPER LENGTH IN INCHES ";PI;:A=PI:GOSUB2410
  167. 1690 INPUTPI:PL=INT(9*PI):IFPI<1THENPI=11:GOTO1680
  168. 1700 PRINT"[153]THE VERTICAL COLUMNS CAN OCCUPY AS MANY
  169. 1710 [153]"AS";PW;"PRINT SPACES ACROSS THE PAGE.
  170. 1720 PRINT"THERE ARE 10 PRINT SPACES PER INCH.
  171. 1730 [153]"  HOW MANY COLUMNS ON THE FORM ";NC%;:A[178]NC%:[141]2410
  172. 1740 [133]NC%:[139]NC%[179]1[167][153]EM$:[137]1730
  173. 1750 [153]:W[178]0:[129]J[178]1[164]NC%
  174. 1760 [153]"   HOW MANY SPACES IN COLUMN";J;CW%(J);:A[178]CW%(J):[141]2410
  175. 1770 [133]A:[139]A[179]1[167][153]EM$:[137]1760
  176. 1780 CW%(J)[178]A:W[178]W[170]CW%(J):[130]
  177. 1790 [153]"PRINTTHESE COLUMNS TAKE UP";W;"OF THE";PW
  178. 1800 [153]"PRINTAVAILABLE SPACES ON YOUR PRINTER. THERE"
  179. 1810 [153]"ARE";PW[171]W;"SPACES AVAILABLE FOR LABELING
  180. 1820 PRINT"THE HORIZONTAL ROWS.
  181. 1830 [139]W[177]PW[167][153]"SYS TOO WIDE! - TRY AGAIN PRINT":[137]1730
  182. 1840 [133]"         IS THIS O.K. (Y OR N)  YCMDCMDCMD";A$
  183. 1850 [139][200](A$,1)[179][177]"Y"[167][153]:[137]1730
  184. 1860 [153]"PRINTNOW WE WILL SET UP THE HORIZONTAL ROWS,"
  185. 1870 [153]"WHICH CAN FILL UP TO";PL[171]1;"PRINTER LINES."
  186. 1880 [153]"THERE ARE 9 PRINTER LINES PER INCH.
  187. 1890 PRINT"     HOW MANY ROWS ON THE FORM ";NR%;:A=NR%:GOSUB2410
  188. 1900 INPUTNR%:IFNR%<1THENPRINTEM$:GOTO1890
  189. 1910 PRINT:NW=LEN(STR$(NR%))-1:NW$=LEFT$("     ",NW)
  190. 1920 PRINT"HOW MANY PRINTER LINES PER ROW ";LR%;:A=LR%:GOSUB2410
  191. 1930 INPUTLR%:IFLR%<1THENPRINTEM$:GOTO1920
  192. 1940 TL%=NR%*LR%+1
  193. 1950 PRINT"[153]THESE ROWS TAKE UP";TL%;"PRINTER LINES,"
  194. 1960 PRINT"INCLUDING A LINE FOR COLUMN LABELS."
  195. 1970 PRINT"YOUR PAPER HAS";PL;"LINES.";
  196. 1980 IFTL%>PLTHENPRINT:PRINT"[158] ERROR! - TOO LONG FOR THE PAPER [153]":GOTO1890
  197. 1990 PRINT"[157], LEAVING";PL-TL%
  198. 2000 PRINT"LINES UNPRINTED."
  199. 2010 INPUT"         IS THIS O.K. (Y OR N)  Y[157][157][157]";A$
  200. 2020 IFLEFT$(A$,1)<>"Y"THENPRINT:GOTO1890
  201. 2030 PRINT"[153]NOW WE WILL DO THE OPTIONAL LABELS.
  202. 2040 [153]"YOUR FORM HAS";NC%;"VERTICAL COLUMNS,
  203. 2050 PRINT"WHICH YOU CAN LABEL IF YOU WISH.
  204. 2060 [133]"    LABEL THE COLUMNS (Y OR N)  YCMDCMDCMD";A$
  205. 2070 [139][200](A$,1)[179][177]"Y"[167]CL$[178]" ":[137]2200
  206. 2080 [141]2430:LS[178]0:[129]J[178]1[164]NC%
  207. 2090 [153]"LABEL FOR COLUMN";J;"-";CW%(J);"SPACES";
  208. 2100 [139]CW%(J)[179]2[167][153]"CMD ";
  209. 2110 [153]:[153]"  ";Q$;[199](20);Q$;
  210. 2120 [139]CL$[178]""[167][129]K[178]1[164]CW%(J):[153]" ";:[130]:[137]2150
  211. 2130 [139][195](CL$)[179]W[167]CL$[178]CL$[170]" ":[137]2130
  212. 2140 [153][202](CL$,LS[170]1,CW%(J));:LS[178]LS[170]CW%(J)
  213. 2150 A[178][185](0):[153]Q$:[139]A[177]38[167][153]"ON";
  214. 2160 [153]"ON";:[151]K1,29:[151]K2,1:[133]A$
  215. 2170 [139][195](A$)[179][177]CW%(J)[167][153]"SYS WRONG WIDTH! - TRY AGAIN ":[137] 2090
  216. 2180 L$[178]L$[170]A$:[130]:CL$[178]L$
  217. 2190 :
  218. 2200 [133]"       LABEL THE ROWS (Y OR N)  YCMDCMDCMD";A$
  219. 2210 [139][200](A$,1)[179][177]"Y"[167]2390:[143] THIS DEST OK??
  220. 2220 [153]"PRINTTHE FORM IS";W;"SPACES WIDE, LEAVING"
  221. 2230 [153]"CMD";PW[171]W;"SPACES FOR LABELING ITS";NR%:[153]"HORIZONTAL ROWS.
  222. 2240 PRINT"  HOW MANY TO ALLOW FOR LABELS ";LW;:A=LW:GOSUB2410
  223. 2250 INPUTLW:IFLW<1THENPRINTEM$:GOTO2240:REM MAYBE NOT NEEDED
  224. 2260 IFLW>PW-WTHENPRINT"       [158] ERROR! -";PW-W;"[157] MAXIMUM ":GOTO2240
  225. 2270 LW$="":FORJ=1TOLW:LW$=LW$+" ":NEXT
  226. 2280 GOSUB2430
  227. 2290 FORJ=1TONR%
  228. 2300 RL$=RL$(J)+LW$:PRINT"LABEL FOR ROW";J;"-";LW;"SPACES";
  229. 2310 IFLW<2THENPRINT"[157] ";
  230. 2320 PRINT:PRINT"  ";Q$;MID$(RL$,1,LW);
  231. 2330 A=POS(0):PRINTQ$:IFA>38THENPRINT"[145]";
  232. 2340 PRINT"[145]";:POKEK1,29:POKEK2,1:INPUTRL$
  233. 2350 IFLEN(RL$)<>LWTHENPRINT"[158] WRONG LENGTH!! - TRY AGAIN ":GOTO2300
  234. 2360 RL$(J)=RL$
  235. 2370 NEXT
  236. 2380 PRINT"[153]YOUR FORM IS FINISHED!"
  237. 2390 RETURN
  238. 2400 :
  239. 2410 PRINTLEFT$("[157][157][157][157][157][157][157][157]",2+LEN(STR$(A)));:RETURN:REM ALIGN INPUT
  240. 2420 :
  241. 2430 PRINT"[153]ENTER THE LABELS RIGHT NOW. YOU MUST"
  242. 2440 PRINT"KEEP THEM BETWEEN THE QUOTATION MARKS,"
  243. 2450 PRINT"BUT YOU CAN CENTER THEM OR POSITION"
  244. 2460 PRINT"THEM AS YOU LIKE."
  245. 2470 RETURN
  246. 2480 :
  247. 2490 REM ** FORM SAVER
  248. 2500 PRINT#2,LR%;R$;LW;R$;NC%;R$;NR%;R$;PI;R$;PW+1;R$;TL%
  249. 2510 PRINT#2,Q$+CL$+Q$
  250. 2520 FORJ=1TONC%:PRINT#2,CW%(J):NEXT
  251. 2530 FORJ=1TONR%:PRINT#2,Q$+RL$(J)+Q$:NEXT
  252. 2540 CLOSE2:CLOSE15
  253. 2550 RETURN
  254.